[IA64] IA64_GRANT_TABLE_PADDR
authorawilliam@xenbuild.aw <awilliam@xenbuild.aw>
Thu, 23 Mar 2006 20:19:14 +0000 (13:19 -0700)
committerawilliam@xenbuild.aw <awilliam@xenbuild.aw>
Thu, 23 Mar 2006 20:19:14 +0000 (13:19 -0700)
IA64_GRANT_TABLE_PADDR constant added to avoid use of hard-coded value.
translate_domain_pte uses it as well as ORDER_GRANT_FRAMES to filter error
message.

Signed-off-by: Tristan Gingold <tristan.gingold@bull.net>
xen/arch/ia64/xen/dom_fw.c
xen/arch/ia64/xen/process.c
xen/include/asm-ia64/grant_table.h

index e3f7472a3f3ca3188102ba7bbf605a0427087cf8..200bcb58ae9e00816e4dd8623ddace8cf649e5f3 100644 (file)
@@ -20,7 +20,7 @@
 #include <asm/dom_fw.h>
 #include <public/sched.h>
 
-static struct ia64_boot_param *dom_fw_init(struct domain *, char *,int,char *,int);
+static struct ia64_boot_param *dom_fw_init(struct domain *, const char *,int,char *,int);
 extern unsigned long domain_mpa_to_imva(struct domain *,unsigned long mpaddr);
 extern struct domain *dom0;
 extern unsigned long dom0_start;
@@ -553,7 +553,7 @@ dom_fw_fake_acpi(struct domain *d, struct fake_acpi_tables *tables)
 }
 
 static struct ia64_boot_param *
-dom_fw_init (struct domain *d, char *args, int arglen, char *fw_mem, int fw_mem_size)
+dom_fw_init (struct domain *d, const char *args, int arglen, char *fw_mem, int fw_mem_size)
 {
        efi_system_table_t *efi_systab;
        efi_runtime_services_t *efi_runtime;
index b46634197bd1c11313167f5181f4c14882c8b431..b3bf6d9a917a8429fc654afd520b45f40c5ce206 100644 (file)
@@ -98,9 +98,16 @@ unsigned long translate_domain_pte(unsigned long pteval,
                }
        }
        else if ((mpaddr >> PAGE_SHIFT) > d->max_pages) {
-               if ((mpaddr & ~0x1fffL ) != (1L << 40))
-               printf("translate_domain_pte: bad mpa=0x%lx (> 0x%lx),vadr=0x%lx,pteval=0x%lx,itir=0x%lx\n",
-                       mpaddr, (unsigned long) d->max_pages<<PAGE_SHIFT, address, pteval, itir);
+               /* Address beyond the limit.  However the grant table is
+                  also beyond the limit.  Display a message if not in the
+                  grant table.  */
+               if (mpaddr >= IA64_GRANT_TABLE_PADDR
+                   && mpaddr < (IA64_GRANT_TABLE_PADDR 
+                                + (ORDER_GRANT_FRAMES << PAGE_SHIFT)))
+                       printf("translate_domain_pte: bad mpa=0x%lx (> 0x%lx),"
+                              "vadr=0x%lx,pteval=0x%lx,itir=0x%lx\n",
+                              mpaddr, (unsigned long)d->max_pages<<PAGE_SHIFT,
+                              address, pteval, itir);
                tdpfoo();
        }
        pteval2 = lookup_domain_mpa(d,mpaddr);
index 14b9456409821896c24ef80a8b32fa466a2b5078..227f2e590b708c691f208b4af709d5b423420c9a 100644 (file)
 
 #define gnttab_create_shared_page(d, t, i) ((void)0)
 
+/* Guest physical address of the grant table.  */
+#define IA64_GRANT_TABLE_PADDR (1UL << 40)
+
 #define gnttab_shared_gmfn(d, t, i)                                     \
     ( ((d) == dom0) ?                                                   \
       ((virt_to_maddr((t)->shared) >> PAGE_SHIFT) + (i)) :              \
-      (assign_domain_page((d), 1UL<<40, virt_to_maddr((t)->shared)),       \
-       1UL << (40 - PAGE_SHIFT))                                        \
+      (assign_domain_page((d), IA64_GRANT_TABLE_PADDR,                         \
+       virt_to_maddr((t)->shared)), IA64_GRANT_TABLE_PADDR >> PAGE_SHIFT) \
     )
 
 #define gnttab_log_dirty(d, f) ((void)0)